# @Time    :2025/4/15 16:35
def hanoi(n, source,target, buffer ):
    if n == 1:
        print(f"从{source}移动到{target}")
    else:
        hanoi(n - 1, source, buffer, target)

        print(f"将{n-1}个圆盘从{source}移动到{buffer}，借助{target}")
        #  print(f"第{n}个最大的圆盘从{source}移动到{buffer}，借助{target}")

        hanoi(n-1, buffer, target, source)


# def hanoi(n, source, buffer,target):
#     if n==1:
#         print(f"从{source}移动到{target}")
#     else:
#         hanoi(n-1,source,buffer,target)
#         print(f"将{n}个圆盘从{source}移动到{buffer}")
#
#         hanoi(n-1,buffer,target,source)
# hanoi(3,"a","b","c")

# def hanoi(n, source, target, auxiliary):
#     """
#     解决汉诺塔问题的递归函数。
#
#     参数说明：
#     - n: 盘子的数量。
#     - source: 起始柱子（源柱子）。
#     - target: 目标柱子（目标柱子）。
#     - auxiliary: 辅助柱子（中间柱子）。
#     """
#     if n == 1:
#         # 如果只有一个盘子，直接从 source 移动到 target
#         print(f"将盘子 1 从 {source} 移动到 {target}")
#     else:
#         # 1. 将前 n-1 个盘子从 source 移动到 auxiliary（借助 target 作为辅助）
#         hanoi(n - 1, source, auxiliary, target)
#
#         # 2. 将第 n 个盘子从 source 移动到 target
#         print(f"将盘子 {n} 从 {source} 移动到 {target}")
#
#         # 3. 将前 n-1 个盘子从 auxiliary 移动到 target（借助 source 作为辅助）
#         hanoi(n - 1, auxiliary, target, source)
#

# 测试代码
if __name__ == "__main__":
    num_disks = 2  # 盘子的数量
    hanoi(num_disks, "A", "C", "B")
